/**
 * Created by Nico on 2015/12/30.
 */

var Action,         //系统行为表
    Action_Log,     //行为日志表
    Addons,         //插件表
    Attachment,     //附件表
    Attribute,    //模型属性表
    Auth_Extend, //用户组与分类的对应关系表
    Auth_Group,
    Auth_Group_Access,
    Auth_Rule,
    Category,
    Channel,
    Config,
    Document,
    Document_Article,   //文档模型文章表
    Document_Download,  //文档模型下载表
    File, //文件表
    Hooks,
    Member,//会员表
    Menu,
    Model,//文档模型表
    Picture,
    Ucenter_Admin,//管理员表
    Ucenter_App,//应用表
    Ucenter_Member,//用户表
    Ucenter_Setting,//设置表
    Url,
    Userdata,
    Area,
    User_Area_Relation
    ;
module.exports = function(schema) {
    //创建action表
    Action = schema.define('Action', {
        name: {type: String,sort: true, default:'',limit: 30},        //行为唯一标识
        title: {type: String, default:'',limit: 100},     //行为说明
        remark: {type: String,  default:'',limit: 100},    //行为描述
        rule: {type: String,  limit: 100},      //行为规则
        log:{type:String, limit:100},            //日志规则
        type:{type:Number, default:1,limit:100},           //类型
        status:{type:Number,default:0,limit:100},          //状态
        update_time:{type:Date,default:function(){return new Date();}}                //修改时间
    },{
        table:"gr_action"
    });
    //插件表
    Action_Log = schema.define('Action_Log', {
        action_id: {type: Number, sort: true, limit: 30},
        user_id: {type: Number, index: true, limit: 100},
        action_ip: {type: Number, index: true, limit: 100},
        model: {type: String, index: true, limit: 100},
        record_id:{type:Number, index:true,limit:100},
        remark:{type:String, index:true,limit:100},
        status:{type:Number,index:true,limit:100},
        create_time:{type:Number,index:true}
    },{
        table:"gr_action_log"
    });

    Addons = schema.define("Addons",{
        name:{type:String,index:true,limit:40},             //插件名或者标识
        title:{type:String, index:true,limit:20},           //中文名
        description:{type:String,index:true},                 //插件描述
        status:{type:Number,index:true},                    //状态
        config:{type:String, index:true},                     //配置
        author:{type:String,index:true},                    //作者
        version:{type:String,index:true},                   //版本号
        create_time:{type:Date,default:function(){return new Date();}},//安装时间
        has_adminlist:{type:Number,default:0}                        //是否有后台列表
    },{
        table:"gr_addons"
    });
    //附件表
    Attachment = schema.define('Attachment',{
        uid:{type:Number,default:0},    //用户ID
        title:{type:String, default:""}, //附件显示名
        type:{type:Number,default:0},//附件类型
        source:{type:Number,default:0},//资源ID
        record_id:{type:Number,default:0},//关联记录ID
        download:{type:Number,default:0},
        size:{type:Number,default:0},
        create_time:{type:Date,default:function(){return new Date();}},
        update_time:{type:Date,default:function(){return new Date()}},
        status:{type:Number,default:0} //状态
    },{
        table:"gr_attachment"
    });
    //模型属性表
    Attribute = schema.define('Attribute',{
        name:{type:String,default:""}, //字段名
        title:{type:String,default:''},//字段注释
        field:{type:String, default:''},//字段定义
        type:{type:String, default:''}, //数据类型
        value:{type:String, default:''},//字段默认值
        remark:{type:String, default:''},//备注
        is_show:{type:Number,default:1},//是否显示
        extra:{type:String, default:''},//参数
        model_id:{type:Number, default:0},//模型类型
        is_must:{type:Number, default:0},//是否必填
        status:{type:Number,default:0},//状态
        update_time:{type:Date,default:function(){return new Date()}},//更新时间
        create_time:{type:Date,default:function(){return new Date()}},//创建时间
        validate_rule:{type:String},//
        validate_time:{type:Number},
        error_info:{type:String},
        validate_type:{type:String},
        auto_rule:{type:String},
        auto_time:{type:Number},
        auto_type:{type:String}
    },{
        table:"gr_attribute"
    });

    //用户组与分类的对应关系表
    Auth_Extend = schema.define('Auth_Extend',{
        group_id:{type:Number},//用户id
        extend_id:{type:Number},//扩展表中数据的id
        type:{type:Number},//扩展类型标识 1:栏目分类权限;2:模型权限
    },{
        table:"gr_auth_extend"
    });

    Auth_Group = schema.define('Auth_Group',{
        moduld:{type:String},//用户组所属模块
        type:{type:Number},//组类型
        title:{type:String, default:'',limit:20},//用户组中文名称
        description:{type:String, default:'',limit:80},//描述信息
        status:{type:Number,default:1},//用户组状态：为1正常，为0禁用,-1为删除
        rules:{type:String, default:'',limit:500}//用户组拥有的规则id，多个规则 , 隔开
    },{
        table:"gr_auth_group"
    });

    Auth_Group_Access = schema.define('Auth_Group_Access',{
        uid:{type:Number,limit:10},//用户id
        group_id:{type:Number,limit:8}, //用户组id

    },{
        table:'gr_auth_group_access'
    });
    Auth_Rule = schema.define('Auth_Rule',{
        module:{type:String, limit:20},//规则所属module
        type:{type:Number,default:1,limit:2},//1-url;2-主菜单
        name:{type:String, default:'',limit:80},//规则唯一英文标识
        title:{type:String, default:'',limit:20},//规则中文描述
        status:{type:Number,default:1,limit:1},//是否有效(0:无效,1:有效)
        condition:{type:String, default:'',limit:300},//规则附加条件
    },{
        table:'gr_auth_rule'
    });
    //分类表
    Category = schema.define('Category',{
        name:{type:String,limit:20},//标志
        title:{type:String, limit:50},//标题
        pid:{type:Number,default:0,limit:10},//上级分类ID
        sort:{type:Number,default:0,limit:10},//排序（同级有效）
        list_row:{type:Number,default:10,limit:3},//列表每页行数
        meta_title:{type:String, default:'',limit:50},//SEO的网页标题
        keywords:{type:String, default:'',limit:255},//关键字
        description:{type:String, default:'',limit:255},//描述
        template_index:{type:String, limit:100},//频道页模版
        template_lists:{type:String, limit:100},//别表页模版
        template_detail:{type:String, limit:100},//详情页模版
        template_edit:{type:String, limit:100},//编辑页模版
        model:{type:String, limit:100,default:''},//关联模型
        type:{type:String, limit:100,default:''},//允许发布的内容类型
        link_id:{type:Number,limit:10,default:0},//外链
        allow_publish:{type:Number,limit:3,default:0},//是否允许发布内容
        display:{type:Number,limit:3,default:0},//可见性
        reply:{type:Number,limit:3,default:0},//是否允许回复
        check:{type:Number,limit:3,default:0},//发布的文章是否需要审核
        reply_model:{type:String, limit:100,default:''},
        extend:{type:String},//扩展设置
        create_time:{type:Date,default:function(){return new Date();}},
        update_time:{type:Date,default:function(){return new Date();}},
        status:{type:Number,default:0,limit:4},//数据状态
        icon:{type:Number,default:0,limit:10},//分类图标
    },{
        table:'gr_category'
    });

    //频道表
    Channel = schema.define('Channel', {
        pid:{type:Number,default:0,limit:10},//上级频道ID
        title:{type:String, limit:30},//频道标题
        url:{type:String, limit:100},//频道链接
        sort:{type:Number,default:0,limit:10},//导航排序
        create_time:{type:Date,default:function(){return new Date();}},
        update_time:{type:Date,default:function(){return new Date();}},
        status:{type:Number,default:0,limit:4},//状态
        target:{type:Number,default:0,limit:2},//新窗口打开
    },{
        table:'gr_channel'
    });

    Config = schema.define('Config',{
        name:{type:String, default:'',limit:30},//配置名称
        type:{type:Number,default:0,limit:3},//配置类型
        title:{type:String ,default:'',limit:30},//配置说明
        group:{type:Number,default:0,limit:3},//配置分组
        extra:{type:String, default:'',limit:255},//配置值
        remark:{type:String, default:'',limit:100},//配置说明
        create_time:{type:Date,default:function(){return new Date();}},
        update_time:{type:Date,default:function(){return new Date();}},
        status:{type:Number,limit:4,default:0},//状态
        value:{type:String},//配置值
        sort:{type:Number,default:0,limit:3},//排序
    },{
        table:'gr_config'
    });

    Document = schema.define('Document',{
        uid:{type:Number,default:0,limit:10},//用户ID
        name:{type:String, default:'',limit:40},//标识
        title:{type:String, default:'',limit:80},//标题
        category_id:{type:Number}
    },{
        table:'gr_document'
    });
    //文档模型文章表
    Document_Article = schema.define('Document_Article',{
        parse:{type:Number,default:0,limit:3},//内容解析类型
        content:{type:String},//文章内容
        template:{type:String, default:'',limit:100},//详情页显示模版
        bookmark:{type:Number,default:0,limit:10},//收藏数
    },{
        table:'gr_document_article'
    });

    //文档模型下载表
    Document_Download = schema.define('Document_Download',{
        parse:{type:Number,default:0,limit:3},//内容解析类型
        content:{type:String},//下载详细描述
        template:{type:String, default:'',limit:100},//详情页显示模版
        file_id:{type:Number,limit:10,default:''},//文件ID
        download:{type:Number,limit:10,default:0},//下载次数
        size:{type:Number,limit:20,default:0}//文件大小
    },{
        table:'gr_document_download'
    });

    //文件表
    File = schema.define('File',{
        name:{type:String, default:'',limit:30},//原始文件名
        savename:{type:String, default:'',limit:20},//保存名称
        savepath:{type:String, default:'',limit:30},//文件保存路径
        ext:{type:String, default:'',limit:5},//文件后缀
        mime:{type:String, default:'',limit:40},//文件mime类型
        size:{type:Number,default:0,limit:10},//文件大小
        md5:{type:String, default:'',limit:32},//文件md5
        sha1:{type:String,default:'',limit:40},//文件sha1编码
        location:{type:Number,default:0,limit:3},//文件保存位置
        create_time:{type:Date,default:function(){return new Date();}} //上传时间

    },{
        table:'gr_file'
    });

    //
    Hooks = schema.define('Hooks',{
        name:{type:String, default:'',limit:40},//钩子名称
        description:{type:String, default:'',limit:255},//描述
        type:{type:Number,default:1,limit:1},//类型
        update_time:{type:Date,default:function(){return new Date();}}, //上传时间
        addons:{type:String, default:'',limit:255}
    },{
        table:'gr_hooks'
    });

    //Member，会员表
    Member = schema.define('Member',{
        nickname:{type:String, default:'',limit:16},//昵称
        sex:{type:Number,default:0,limit:3},//性别
        birthday:{type:Date,default:function(){return new Date('1900-01-01');}},//出生日期
        qq:{type:String, default:'',limit:10},//qq号
        score:{type:Number,default:0,limit:8},//用户积分
        login:{type:Number,default:0,limit:10},//登录次数
        reg_ip:{type:Number,default:0,limit:20},//注册IP
        reg_time:{type:Date,default:function(){return new Date();}},//注册时间
        last_login_ip:{type:Number,default:0,limit:20},//最后登录IP
        last_login_time:{type:Date,default:function(){return new Date();}},//最后登录时间
        status:{type:Number,default:0,limit:4}//会员状态

    },{
        table:'gr_member'
    });

    //menu
    Menu = schema.define('Menu',{
        title:{type:String, default:'',limit:50},//标题
        pid:{type:Number,default:0,limit:10},//上级分类ID
        sort:{type:Number,default:0,limit:10},//排序（同级有效）
        url:{type:String, default:'',limit:255},//链接地址
        hide:{type:Number,default:0,limit:1},//是否隐藏
        tip:{type:String, default:'',limit:255},//提示
        group:{type:String, default:'',limit:50},//分组
        is_dev:{type:Number,default:0,limit:1},//是否仅开发者模式可见
    },{
        table:'gr_menu'
    });

    //Model,//文档模型表
    Model = schema.define('Model',{
        name:{type:String,default:'',limit:30},//模型标识
        title:{type:String,default:'',limit:30},//模型名称
        extend:{type:Number,default:0,limit:10},//继承的模型
        relation:{type:String,default:'',limit:30},//继承与被继承模型的关联字段
        need_pk:{type:Number,default:1,limit:1},//新建表时是否需要主键字段
        field_sort:{type:String,default:'',limit:255},//表单字段排序
        field_group:{type:String,default:'1:基础',limit:255},//字段分组
        attribute_list:{type:String,default:'',limit:255},//属性列表（表的字段）
        template_list:{type:String,default:'',limit:100},//列表模板
        template_add:{type:String,default:'',limit:100},//新增模板
        template_edit:{type:String,default:'',limit:100},//编辑模板
        list_grid:{type:String,default:'',limit:255},//列表定义
        list_row:{type:Number,default:10,limit:2},//列表数据长度
        search_key:{type:String,default:'',limit:50},//默认搜索字段
        search_list:{type:String,default:'',limit:255},//高级搜索的字段
        create_time:{type:Date,default:function(){return new Date();}},//创建时间
        update_time:{type:Date,default:function(){return new Date();}},//更新时间
        status:{type:Number,default:0,limit:3},//状态
        engine_type:{type:String,default:'MyISAM',limit:25},//数据库引擎
    },{
        table:'gr_model'
    });

    //Picture
    Picture = schema.define('Picture',{
        path:{type:String, default:'',limit:255},//路径
        url:{type:String, default:'',limit:255},//图片链接
        md5:{type:String, default:'',limit:32},//文件md5
        sha1:{type:String, default:'',limit:40},//文件sha1编码
        status:{type:Number,default:0,limit:2},//状态
        create_time:{type:Date,default:function(){return new Date();}},//创建时间

    },{
        table:'gr_picture'
    });

    //Ucenter_Admin,//管理员表
    Ucenter_Admin = schema.define('Ucenter_Admin',{
        member_id:{type:Number,default:0,limit:10},//管理员用户ID
        status:{type:Number,default:0,limit:3},//管理员状态
    },{
        table:'gr_ucenter_admin'
    });

    //Ucenter_App,//应用表
    Ucenter_App = schema.define('Ucenter_App',{
        title:{type:String, default:'',limit:30},//应用名称
        url:{type:String, default:'',limit:100},//应用url
        ip:{type:String, default:'',limit:15},//应用IP
        auth_key:{type:String, default:'',limit:100},//加密key
        sys_login:{type:Number,default:0,limit:1},//同步登录
        allow_ip:{type:String, default:'',limit:255},//允许访问的IP
        create_time:{type:Date,default:function(){return new Date();}},//创建时间
        update_time:{type:Date,default:function(){return new Date();}},//创建时间
        status:{type:Number,default:0,limit:4},//应用状态
    },{
        table:'gr_ucenter_app'
    });
    //ucenter_member
    Ucenter_Member = schema.define('Ucenter_Member',{
        username:{type:String, default:'',limit:16},//用户名
        password:{type:String, default:'',limit:32},//密码
        email:{type:String, default:'',limit:32},//邮箱
        mobile:{type:String, default:'',limit:15},//手机号
        reg_time:{type:Date,default:function(){return new Date();}},//注册时间
        reg_ip:{type:Number,default:0,limit:20},//注册ip
        last_login_time:{type:Date,default:function(){return new Date();}},//最后登录时间
        last_login_ip:{type:Number,default:0,limit:20},//最后登录ip
        update_time:{type:Date,default:function(){return new Date();}},//创建时间
        status:{type:Number,default:1,limit:4},//用户状态
    },{
        table:'gr_ucenter_member'
    });
    //Ucenter_Setting,//设置表
    Ucenter_Setting = schema.define('Ucenter_Setting',{
        type:{type:Number,default:0,limit:3},//设置类型（1-用户配置）
        value:{type:String}//配置数据
    },{
        table:'gr_ucenter_setting'
    });

    Url = schema.define('Url',{
        url:{type:String, default:'',limit:255},//链接地址
        short:{type:String, default:'',limit:100},//短网址
        status:{type:Number,default:2,limit:2},//状态
        create_time:{type:Date,default:function(){return new Date();}},//创建时间

    },{
        table:'gr_url'
    });

    Userdata = schema.define('Userdata',{
        type:{type:Number,limit:3} ,//类型标识
        target_id:{type:Number,limit:10},//目标ID
    },{
        table:'gr_userdata'
    });


    Area = schema.define('Area',{
        country:{type:String,default:''},//国家
        province:{type:String,default:''},//省
        city:{type:String,default:''},//市
        area:{type:String,default:''},//区
        pargana:{type:String,default:''}, //大区（类似于华南区、华东）
        parentid:{type:Number,dataType:'int'},//地区父级id
        status:{type:Number,default:1} //-1 已删除，0 被禁用，1 正常，2 未审核
    },{
        table:'gr_area'
    });

    User_Area_Relation = schema.define('User_Area_Relation',{
        uid:{type:String,default:''},
        areaid:{type:String,default:''}
    },{
        table:'gr_user_area_relation'
    });
    Ucenter_Member.hasMany(User_Area_Relation);
}